package persistencia;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.annotations.ForeignKey;

@Entity
@Table(name = "TBL_PRODUTO")
public class Produto {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "PRO_ID")
	private int id;

	@Column(name = "PRO_DESCRICAO", length = 50)
	private String descricao;

	@OneToOne
	@JoinColumn(name = "TBL_FABRICANTE_FAB_ID")
	@ForeignKey(name = "fk_TBL_PRODUTO_TBL_FABRICANTE_idx")
	private Fabricante fabricante;

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
	@JoinColumn(name = "TBL_PRODUTO_PRO_ID")
	@ForeignKey(name = "fk_TBL_PRODUTO_TBL_FABRICANTE_idx")
	private List<Apresentacao> apresentacao = new ArrayList<Apresentacao>();

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Fabricante getFabricante() {
		return fabricante;
	}

	public void setFabricante(Fabricante fabricante) {
		this.fabricante = fabricante;
	}

	public List<Apresentacao> getApresentacao() {
		return apresentacao;
	}

	public void setApresentacao(List<Apresentacao> apresentacao) {
		this.apresentacao = apresentacao;
	}
}
